<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/1/2
 * Time: 16:15
 */
namespace Home\Model;
use Think\Model;
class GoodsModel extends Model
{
    protected $tableName="goods";
    //自动验证
    //array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
    // 验证规则 （必须）：
    //要进行验证的规则，需要结合附加规则，如果在使用正则验证的附加规则情况下，系统还内置了一些常用正则验证的规则，
    //可以直接作为验证规则使用，包括：require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字。
    //验证时间：
    // self::EXISTS_VALIDATE 或者0 存在字段就验证（默认）
    //self::MUST_VALIDATE 或者1 必须验证
    //self::VALUE_VALIDATE或者2 值不为空的时候验证
    //附加规则：
    // regex  正则验证，定义的验证规则是一个正则表达式（默认）
    //expire  验证是否在有效期，定义的验证规则表示时间范围，可以到时间，例如可以使用 2012-1-15,2013-1-15 表示当前提交有效期在2012-1-15到2013-1-15之间，也可以使用时间戳定义
    //ip_allow  验证IP是否允许，定义的验证规则表示允许的IP地址列表，用逗号分隔，例如201.12.2.5,201.12.2.6
    //ip_deny  验证IP是否禁止，定义的验证规则表示禁止的ip地址列表，用逗号分隔，例如201.12.2.5,201.12.2.6

    // self::MODEL_INSERT或者1新增数据时候验证
    //self::MODEL_UPDATE或者2编辑数据时候验证
    //self::MODEL_BOTH或者3全部情况下验证（默认）
    //这里的验证时间需要注意，并非只有这三种情况，你可以根据业务需要增加其他的验证时间。
    protected $_validate = array(
        array('verify','require','验证码必须！'), //默认情况下用正则进行验证
        array('good_name','','商品名已经存在！',0,'unique',1), // 验证name字段是否唯一
        array('good_type',array(1,2,3),'商品类型值的范围不正确！',2,'in'), // 判断是否在一个范围内:，还有notin
        array('repassword','password','确认密码不正确',0,'confirm'), // 验证确认密码是否和密码一致
        array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式
        array('good_name','checkGoodsName','商品名格式不正确',1,'callback'), // 定义的验证规则是当前模型类的一个方法
        array('status','1','该商品状态不能进行此操作',4,'equal'), // 验证是否等于某个值，该值由前面的验证规则定义 notequal
        array('good_name',3,12,'商品名称长度不符合规则！',3,'length',3), //验证长度，定义的验证规则可以是一个数字（表示固定长度）或者数字范围（例如3,12 表示长度从3到12的范围）
        array('good_introduction',1,255,'商品简介长度不能超过255！',3,'length',3), //验证长度，定义的验证规则可以是一个数字（表示固定长度）或者数字范围（例如3,12 表示长度从3到12的范围）
        array('selling_price',1,100000,'价格格式错误！',3,'between',3),
        array('number',0,10000,'数量不对！',3,'between',3), //验证范围，定义的验证规则表示范围，可以使用字符串或者数组，例如1,31或者array(1,31) ，notbetween
    );
    //自动完成
       //array(完成字段1,完成规则,[完成条件,附加规则]),
    //完成时间
        //self::MODEL_INSERT或者1  新增数据的时候处理（默认）
        //self::MODEL_UPDATE或者2  更新数据的时候处理
        //self::MODEL_BOTH或者3  所有情况都进行处理

    //完成规则：
        //function  使用函数，表示填充的内容是一个函数名
        //callback  回调方法 ，表示填充的内容是一个当前模型的方法
        //field  用其它字段填充，表示填充的内容是一个其他字段的值
        //string  字符串（默认方式）
        //ignore  为空则忽略（3.1.2新增）

    protected $_auto = array (
        array('is_release','2'), // 新增的时候把status字段设置为1
//        array('password','',2,'ignore') , // 对password字段在为空则忽略
//        array('password','md5',3,'function') , // 对password字段在新增和编辑的时候使md5函数处理
//        array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法
        array('apply_time','getdate',1,'function'), // 对apply_time字段在更新的时候写入当前时间戳
        array('edittime','apply_time',3,'field'), // 用其它字段填充，表示填充的内容是一个其他字段的值
        array('edittime','time',2,'function'), // 用其它字段填充，表示填充的内容是一个其他字段的值
        array('advance_start_date','',2,'ignore'), //
        array('advance_start_date','getAsd',3,'callback'), //
        array('advance_end_date','',3,'ignore'), //

     );
    protected function getName()
    {
getdate();
    }
    protected function getAsd($name)
    {
        if ($name){
            return $name;
        }else{
            return date("Y-m-d",time()+24*3600*3);
        }
    }
    protected function getAed($name)
    {
            $starttime=strtotime($name);
            return date("Y-m-d",$starttime+24*3600*10);

    }
    protected function checkGoodsName()
    {
       // print_r(func_get_args());

       // return $this->create();
    }
    public function saveData($data,$type)
    {
        switch ($type){
            case 1:
                if ($create_data=$this->create($data)){
                    if (!$create_data['advance_end_date']){
                        $create_data['advance_end_date']=$this->getAed($create_data['advance_start_date']);
                    }
                    $this->add($create_data);
                    $result=['success'=>true,'info'=>'新增成功'];
                }else{
                    $result=['success'=>false,'info'=>$this->getError()];
                }
                break;
            case 2:
                if ($this->create($data)){
                    $this->status=2;
                    $this->save();
                    $result=['success'=>true,'info'=>'新增成功'];
                }else{
                    $result=['success'=>false,'info'=>$this->getError()];
                }
                break;
            case 3:
                if ($this->create($data)){
                    $this->save();
                    $result=['success'=>true,'info'=>'新增成功'];
                }else{
                    $result=['success'=>false,'info'=>$this->getError()];
                }
                break;

        }
        return $result;
    }
}
